//创建XMLHttpRequest异步对象
function createXMLHttpRequest() {
	try {
		return new XMLHttpRequest();     //支持大多数浏览器
	} catch (e) {
        try {
			return new ActiveXObject("Msxml2.XMLHTTP");   //支持IE6.0
		} catch (e) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP");  //支持IE5.5及以下版本
			} catch (e) {
				throw e;
			}
		}
	}
}

/*
 * option 对象有如下属性：
 * 请求方式：method
 * 请求的url：url
 * 是否异步：asyn
 * 请求体：params
 * 回调函数：callback
 * 服务器响应数据转换为什么类型：type
 */
function ajax(option) {
	/*
	 * 1、得到XMLHttpRequest异步对象
	 */
	var xmlHttp = createXMLHttpRequest();
	/*
	 * 2、打开与服务器的连接
	 */
	if(!option.method) {   //默认为GET请求
		option.method = "GET";
	}
	if(option.asyn == undefined) {  //默认为异步
		option.asyn = true;
	}
	xmlHttp.open(option.method,option.url,option.asyn);
	/*
	 * 3、判断是否为POST
	 */
	if(option.method == "POST") {
		xmlHttp.setRequestHeader("Content-Type", "application-x-www-form-urlencoded")
	}
	/*
	 * 4、发送请求
	 */
	xmlHttp.send(params);
	/*
	 * 5、注冊监听
	 */
	xmlHttp.onreadystatechange = function() {
		if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {  //双重判断
			var data;
			//获取服务器的响应数据，进行转换
			if(!option.type) {  //如果Type没有赋值，默认为文本
				data = xmlHttp.responseText;
			} else if(option.type == "xml") {
				data = xmlHttp.responseXML;
			} else if(option.type == "json") {
				var text = xmlHttp.responseText;
				data = eval("(" + text + ")");
			} else if(option.type == "text") {
				data = xmlHttp.responseText;
			}
			
			//调用回调函数
			callback(data);
		}
	}
}